iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
Software Development

Leetcode 習慣養成之路系列 第 29

Day 29 - 1472. Design Browser History

  • 分享至 

  • xImage
  •  

題目說明

設計一個瀏覽器歷史紀錄器,包含 access 到某個網頁並且可以找到上一頁 下一頁的功能

思路解析

這題用比較好理解的方式解的話,double linked list 會是一個相當適合的解法
唯一要注意的地方在於,forward 與 backward 造訪的步數如果大於實際瀏覽過的頁面,則必須停留在最後或最一開始的頁面

程式碼

class ListNode:
    def __init__(self, val, prev=None, next=None):
        self.val = val
        self.prev = prev
        self.next = next

class BrowserHistory:

    def __init__(self, homepage: str):
        self.curr = ListNode(homepage)
        

    def visit(self, url: str) -> None:
        self.curr.next = ListNode(url, prev=self.curr)
        self.curr = self.curr.next
        

    def back(self, steps: int) -> str:
        while self.curr.prev and steps > 0:
            self.curr = self.curr.prev
            steps -= 1
        return self.curr.val
        

    def forward(self, steps: int) -> str:
        while self.curr.next and steps > 0:
            self.curr = self.curr.next
            steps -= 1
        return self.curr.val

上一篇
Day 28 - 20. Valid Parentheses
下一篇
Day 30 - 1209. Remove All Adjacent Duplicates in String II
系列文
Leetcode 習慣養成之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言